#ifndef DOUBLELOOPLIST_H
#define DOUBLELOOPLIST_H
#include <stdio.h>
#include <stdlib.h>
typedef int Element;
// 定义节点结构，双向循环链表，一定要维护一个表头结构，定义边界
typedef struct double_node{
    Element val;
    struct double_node *prev;
    struct double_node *next;
}DoubleNode, DoubleLoopLink;

// 初始化链表头，已经有链表头空间后，调用初始化接口
void initDLink(DoubleLoopLink *header);
void releaseDLink(DoubleLoopLink *header);

// 头插、尾插
void insertDLinkHeader(DoubleLoopLink *header, Element val);
void insertDLinkRear(DoubleLoopLink *header, Element val);
// 循环打印链表信息，不打印头节点信息
void showDLink(DoubleLoopLink *header);
// 删除一个元素
void deleteDLink(DoubleLoopLink *header, Element e);
#endif //DOUBLELOOPLIST_H
